package com.zyl.blog.tasks.annotation;

import com.zyl.blog.tasks.enums.TaskTriggerMode;

import java.lang.annotation.*;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.tasks.annotation
 * @ClassName: TaskLog
 * @Description: 任务日志注解，标记需要记录日志的定时任务
 * @Author FinalFantasy
 * @Date 2025/8/12-16:18
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TaskLog {

    /**
     * 任务ID（唯一标识）
     */
    String taskId() default "";

    /**
     * 任务名称
     */
    String taskName() default "";

    /**
     * 任务类型
     */
    String taskType() default "DEFAULT";

    /**
     * 操作者（任务所属用户）
     */
    String operator() default "";

    /**
     * 是否持久化日志到数据库
     */
    boolean persist() default true;

    /**
     * 触发方式
     */
    TaskTriggerMode triggerMode() default TaskTriggerMode.AUTO;

    /**
     * 失败重试次数
     */
    int retryTimes() default 0;

    /**
     * 是否启用失败告警
     */
    boolean enableAlert() default true;
}

